using System;

namespace PoliceBase
{
    public class Path
    {
        #region DataFields
        private int _id;
        private Node _statingNode;
        private Node _endingNode;
        private int _startingOddBuilding;
        private int _startingEvenBuilding;
        private int _endingOddBuilding;
        private int _endingEvenBuilding;
        private int _cost;
        private string _street;
        private string _subarb;
        #endregion

        #region Properties
        public int ID
        {
            get { return _id; }
        }
        public Node StatingNode
        {
            get { return _statingNode; }
        }
        public Node EndingNode
        {
            get { return _endingNode; }
        }
        public int StartingOddBuilding
        {
            get { return _startingOddBuilding; }
        }
        public int StartingEvenBuilding
        {
            get { return _startingEvenBuilding; }
        }
        public int EndingOddBuilding
        {
            get { return _endingOddBuilding; }
        }
        public int EndingEvenBuilding
        {
            get { return _endingEvenBuilding; }
        }
        public int Cost
        {
            get { return _cost; }
        }
        public string Street
        {
            get { return _street; }
        }
        public string Subarb
        {
            get { return _subarb; }
        }
        #endregion

        #region Constructors
        public Path(int id, Node startingNode, Node endingNode, int startingOddBuilding, int startingEvenBuilding, int endingOddBuilding, int endingEvenBuilding, string street, string subarb, int cost)
        {
            this._id = id;
            this._cost = cost;

            this._statingNode = startingNode;
            this._startingOddBuilding = startingOddBuilding;
            this._startingEvenBuilding = startingEvenBuilding;

            this._endingNode = endingNode;
            this._endingOddBuilding = endingOddBuilding;
            this._endingEvenBuilding = endingEvenBuilding;

            this._street = street;
            this._subarb = subarb;
        }
        #endregion

        #region PublicMethods
        public override string ToString()
        {
            string str = "ID : " + this._id + "\n";
            str += "StratingNode : " + this._statingNode + "\n";
            str += "EndingNode : " + this._endingNode + "\n";
            str += "StratingOddBuilding : " + this._startingOddBuilding + "\n";
            str += "StratingEvenBuilding : " + this._startingEvenBuilding + "\n";
            str += "EndingOddBuilding : " + this._endingOddBuilding + "\n";
            str += "EndingEvenBuilding : " + this._endingEvenBuilding + "\n";
            str += "NormalSpeed : " + this._cost + "\n";
            str += "Street : " + this._street + "\n";
            str += "Subarb : " + this._subarb;
            return str;
        }
        #endregion
    }
}
